{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MODULARITY: 0.408949901457\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nGujSpQvTpk1j2LCmX6SVlZXeNr7b5sl90n5m78lJu1dp0q6IiHQKnwJMly5dmDx5MpMnTz5tX3x8\nPAsXLvSl+dOcaUJoXFwcTz/9NHV1dRQXF/PCCy+QmprqHYVpiTFGj3j7yLir8Tz35ImVdjVpV0RE\nOodPAeZUhw8fpqqqil69ehEbG9vudhISErDZbFRVVTXbXlVVddoIyqksy6Jnz54ADBgwgH379rFy\n5UqGDh1KUlKSt42TnwGqq6sZOHBgu+p0OBwYY9p1bqiw2+04nc5W95vjjVQ9+ytMwzGSH/stXbr3\n7MTq/Ods/QwX6md4iZR+QuT0NRL66c//yfU5wGzevJklS5bwzTffAPDLX/6SYcOGUV1dzRNPPMFN\nN93EZZdddu4FRUWRnp5OcXExI0aMAJpGSnbs2MG4cePOuR1jDA0NDQCkpqaSlJREcXExAwYMAJpu\nOX322Wdce+2159zmqaqrq73thyun00lFRUWr+z3L/4zZuQ3bw/+XKpsdznBsMDtbP8OF+hleIqWf\nEDl9jYR+2u12evTwz0MePt0/2bJlC8888wwJCQncfPPNzfY5HA6cTidr165tc7sTJkzgrbfewuVy\n8fXXX7Nw4ULq6+vJzc0FYP78+bz44ove41euXMlHH33EwYMH+frrrykoKOCdd95ptg7M+PHj+dvf\n/saWLVvYu3cv8+fPJyUlpdmkYzl3no0uzD9fw5r0E6zBmWc/QURExI98GoF55ZVXGDp0KHPmzMHt\ndvPyyy8323/BBRfwz3/+s83tZmdn43a7Wb58uXchu1mzZuFwOAAoLy9vNnelrq6OP//5z1RUVBAd\nHU1aWhoPPPAAl19+ufeY66+/nvr6ehYuXMiRI0cYMmQIjz32GFFRfruLFjGaJu3+4cSk3esCXY6I\niEQgn3577927lzvuuKPV/YmJia0uPnc21157bau3d+bMmdPs+1tvvZVbb731rG1OmjSJSZMmtase\naeKdtNtbk3ZFRCRwfLqFFBMTQ11dXav7Dxw4QHx8vC+XkCBijh/H86enoL4O292PYkXHBLokERGJ\nUD4FmO9973u4XC6OHz9+2r7Kykrefvtthg8f7sslJIiYv70Au3dgm/FzrBSttCsiIoHjU4CZPHky\nFRUVPProo965Ltu3b2fp0qXMnDkTgJtuusn3KiXgPBtdmH+sxLr5Tk3aFRGRgPNpDkxaWhq//vWv\n+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\nRgghhBA65/8AZO1mapPXdc8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10d4dbf10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "from scipy.io import loadmat\n",
    "from coclust.coclustering import CoclustMod\n",
    "from coclust.visualization import (plot_cluster_top_terms,\n",
    "                                   get_term_graph,\n",
    "                                   plot_convergence)\n",
    "\n",
    "# Retrieve the Classic3  document-term matrix from a matlab file\n",
    "file_name = \"../datasets/classic3.mat\"\n",
    "matlab_dict = loadmat(file_name)\n",
    "\n",
    "X = matlab_dict['A']\n",
    "\n",
    "# Create and fit a model with 3 co-clusters\n",
    "model = CoclustMod(n_clusters=3, random_state=0)\n",
    "model.fit(X)\n",
    "\n",
    "# Plot modularities\n",
    "print(\"MODULARITY: %s\" % model.modularity)\n",
    "plot_convergence(model.modularities, \"Modularities\")\n",
    "\n",
    "terms = [str(x[0][0]) for x in matlab_dict['ms']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "graph = get_term_graph(X, model, terms, 2, 50, 25)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "require.config({\n",
       "  paths: {\n",
       "      d3: '//cdnjs.cloudflare.com/ajax/libs/d3/3.4.8/d3.min'\n",
       "  }\n",
       "});"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%javascript\n",
    "require.config({\n",
    "  paths: {\n",
    "      d3: '//cdnjs.cloudflare.com/ajax/libs/d3/3.4.8/d3.min'\n",
    "  }\n",
    "});"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "\n",
       "           window.graph={'nodes': [{'group': 0, 'name': 'boundary'}, {'group': 0, 'name': 'pressure'}, {'group': 0, 'name': 'layer'}, {'group': 0, 'name': 'mach'}, {'group': 0, 'name': 'theory'}, {'group': 0, 'name': 'shock'}, {'group': 0, 'name': 'heat'}, {'group': 0, 'name': 'method'}, {'group': 0, 'name': 'wing'}, {'group': 0, 'name': 'supersonic'}, {'group': 0, 'name': 'surface'}, {'group': 0, 'name': 'body'}, {'group': 0, 'name': 'effects'}, {'group': 0, 'name': 'transfer'}, {'group': 0, 'name': 'temperature'}, {'group': 0, 'name': 'obtained'}, {'group': 0, 'name': 'laminar'}, {'group': 0, 'name': 'solution'}, {'group': 0, 'name': 'velocity'}, {'group': 0, 'name': 'equations'}, {'group': 0, 'name': 'ratio'}, {'group': 0, 'name': 'hypersonic'}, {'group': 0, 'name': 'jet'}, {'group': 0, 'name': 'experimental'}, {'group': 0, 'name': 'effect'}, {'group': 0, 'name': 'plate'}, {'group': 0, 'name': 'free'}, {'group': 0, 'name': 'conditions'}, {'group': 0, 'name': 'presented'}, {'group': 0, 'name': 'numbers'}, {'group': 0, 'name': 'distribution'}, {'group': 0, 'name': 'dimensional'}, {'group': 0, 'name': 'stream'}, {'group': 0, 'name': 'reynolds'}, {'group': 0, 'name': 'lift'}, {'group': 0, 'name': 'range'}, {'group': 0, 'name': 'high'}, {'group': 0, 'name': 'solutions'}, {'group': 0, 'name': 'air'}, {'group': 0, 'name': 'problem'}, {'group': 0, 'name': 'bodies'}, {'group': 0, 'name': 'case'}, {'group': 0, 'name': 'buckling'}, {'group': 0, 'name': 'wave'}, {'group': 0, 'name': 'turbulent'}, {'group': 0, 'name': 'drag'}, {'group': 0, 'name': 'investigation'}, {'group': 0, 'name': 'edge'}, {'group': 0, 'name': 'shown'}, {'group': 0, 'name': 'flat'}, {'group': 1, 'name': 'theoretical'}, {'group': 1, 'name': 'optimum'}, {'group': 1, 'name': 'bluff'}, {'group': 1, 'name': 'maximum'}, {'group': 1, 'name': 'rm'}, {'group': 1, 'name': 'tn'}, {'group': 1, 'name': 'ae'}, {'group': 1, 'name': 'minimum'}, {'group': 1, 'name': 'li'}, {'group': 1, 'name': 'prandtl'}, {'group': 1, 'name': 'triangular'}, {'group': 1, 'name': 'detachment'}, {'group': 1, 'name': 'percent'}, {'group': 1, 'name': 'similarity'}, {'group': 1, 'name': 'blast'}, {'group': 1, 'name': 'approximation'}, {'group': 1, 'name': 'plane'}, {'group': 1, 'name': 'functions'}, {'group': 1, 'name': 'disturbances'}, {'group': 1, 'name': 'experiment'}, {'group': 1, 'name': 'cruciform'}, {'group': 1, 'name': 'app'}, {'group': 1, 'name': 'probstein'}, {'group': 1, 'name': 'bow'}, {'group': 1, 'name': 'oblique'}, {'group': 1, 'name': 'hot'}, {'group': 1, 'name': 'expansion'}, {'group': 1, 'name': 'gas'}, {'group': 1, 'name': 'low'}, {'group': 1, 'name': 'variation'}, {'group': 1, 'name': 'initial'}, {'group': 1, 'name': 'rep'}, {'group': 1, 'name': 'scs'}, {'group': 1, 'name': 'thermal'}, {'group': 1, 'name': 'cantilever'}, {'group': 1, 'name': 'load'}, {'group': 1, 'name': 'form'}, {'group': 1, 'name': 'compressors'}, {'group': 1, 'name': 'cylinders'}, {'group': 1, 'name': 'experiments'}, {'group': 1, 'name': 'temperatures'}, {'group': 1, 'name': 'numerical'}, {'group': 1, 'name': 'nozzles'}, {'group': 1, 'name': 'slender'}, {'group': 1, 'name': 'naca'}, {'group': 1, 'name': 'classical'}, {'group': 1, 'name': 'wake'}, {'group': 1, 'name': 'newtonian'}, {'group': 1, 'name': 'columns'}, {'group': 1, 'name': 'tube'}, {'group': 1, 'name': 'tangent'}, {'group': 1, 'name': 'math'}, {'group': 1, 'name': 'applicable'}, {'group': 1, 'name': 'base'}, {'group': 1, 'name': 'density'}, {'group': 1, 'name': 'perigee'}, {'group': 1, 'name': 'nose'}, {'group': 1, 'name': 'weak'}, {'group': 1, 'name': 'wall'}, {'group': 1, 'name': 'span'}, {'group': 1, 'name': 'nasa'}, {'group': 1, 'name': 'thin'}, {'group': 1, 'name': 'skin'}, {'group': 1, 'name': 'langley'}, {'group': 1, 'name': 'exhaust'}, {'group': 1, 'name': 'resultant'}, {'group': 1, 'name': 'viscous'}, {'group': 1, 'name': 'transient'}, {'group': 1, 'name': 'exit'}, {'group': 1, 'name': 'feet'}, {'group': 1, 'name': 'arbitrary'}, {'group': 1, 'name': 'flux'}, {'group': 1, 'name': 'biot'}, {'group': 1, 'name': 'parameters'}, {'group': 1, 'name': 'approximate'}, {'group': 1, 'name': 'viscosity'}, {'group': 1, 'name': 'combinations'}, {'group': 1, 'name': 'agreement'}, {'group': 1, 'name': 'tilt'}, {'group': 1, 'name': 'earth'}, {'group': 1, 'name': 'interference'}, {'group': 1, 'name': 'properties'}, {'group': 1, 'name': 'compressive'}, {'group': 1, 'name': 'calculations'}, {'group': 1, 'name': 'jets'}, {'group': 1, 'name': 'integrations'}, {'group': 1, 'name': 'mass'}, {'group': 1, 'name': 'pressures'}, {'group': 1, 'name': 'combination'}, {'group': 1, 'name': 'similitude'}, {'group': 1, 'name': 'values'}, {'group': 1, 'name': 'thermodynamic'}, {'group': 1, 'name': 'valid'}, {'group': 1, 'name': 'locations'}, {'group': 1, 'name': 'angle'}, {'group': 1, 'name': 'variable'}, {'group': 1, 'name': 'cheng'}, {'group': 1, 'name': 'acoustic'}, {'group': 1, 'name': 'contraction'}, {'group': 1, 'name': 'roughness'}, {'group': 1, 'name': 'disturbance'}, {'group': 1, 'name': 'inviscid'}, {'group': 1, 'name': 'bluntness'}, {'group': 1, 'name': 'sound'}, {'group': 1, 'name': 'magnetic'}, {'group': 1, 'name': 'interaction'}, {'group': 1, 'name': 'fluid'}, {'group': 1, 'name': 'momentum'}, {'group': 1, 'name': 'small'}, {'group': 1, 'name': 'shell'}, {'group': 1, 'name': 'thick'}, {'group': 1, 'name': 'delta'}, {'group': 1, 'name': 'slope'}, {'group': 1, 'name': 'moore'}, {'group': 1, 'name': 'chord'}, {'group': 1, 'name': 'heats'}, {'group': 1, 'name': 'propagation'}, {'group': 1, 'name': 'show'}, {'group': 1, 'name': 'local'}, {'group': 1, 'name': 'shape'}, {'group': 1, 'name': 'axial'}, {'group': 1, 'name': 'tsien'}, {'group': 1, 'name': 'yaw'}, {'group': 1, 'name': 'atmosphere'}, {'group': 1, 'name': 'series'}, {'group': 1, 'name': 'incompressible'}, {'group': 1, 'name': 'direction'}, {'group': 1, 'name': 'front'}, {'group': 1, 'name': 'integral'}, {'group': 1, 'name': 'aerodynamic'}, {'group': 1, 'name': 'order'}, {'group': 1, 'name': 'wings'}, {'group': 1, 'name': 'subsonic'}, {'group': 1, 'name': 'friction'}, {'group': 1, 'name': 'equation'}, {'group': 1, 'name': 'edges'}, {'group': 1, 'name': 'row'}, {'group': 1, 'name': 'point'}, {'group': 1, 'name': 'creep'}, {'group': 1, 'name': 'differential'}, {'group': 1, 'name': 'accurate'}, {'group': 1, 'name': 'exact'}, {'group': 1, 'name': 'obtainable'}, {'group': 1, 'name': 'parallel'}, {'group': 1, 'name': 'spanwise'}, {'group': 1, 'name': 'compression'}, {'group': 1, 'name': 'channel'}, {'group': 1, 'name': 'deformation'}, {'group': 1, 'name': 'outer'}, {'group': 1, 'name': 'blunt'}, {'group': 1, 'name': 'calculation'}, {'group': 1, 'name': 'distance'}, {'group': 1, 'name': 'gases'}, {'group': 1, 'name': 'waves'}, {'group': 1, 'name': 'rates'}, {'group': 1, 'name': 'cylinder'}, {'group': 1, 'name': 'flaps'}, {'group': 1, 'name': 'flows'}, {'group': 1, 'name': 'constant'}, {'group': 1, 'name': 'theories'}, {'group': 1, 'name': 'ordinary'}, {'group': 1, 'name': 'sharp'}, {'group': 1, 'name': 'swept'}, {'group': 1, 'name': 'surfaces'}, {'group': 1, 'name': 'tests'}, {'group': 1, 'name': 'vortices'}, {'group': 1, 'name': 'integration'}, {'group': 1, 'name': 'incident'}, {'group': 1, 'name': 'adjacent'}, {'group': 1, 'name': 'gradient'}, {'group': 1, 'name': 'planform'}, {'group': 1, 'name': 'profiles'}, {'group': 1, 'name': 'strong'}, {'group': 1, 'name': 'engine'}, {'group': 1, 'name': 'smooth'}, {'group': 1, 'name': 'buckle'}, {'group': 1, 'name': 'gust'}, {'group': 1, 'name': 'static'}, {'group': 1, 'name': 'turbojet'}, {'group': 1, 'name': 'diameter'}, {'group': 1, 'name': 'length'}, {'group': 1, 'name': 'regime'}, {'group': 1, 'name': 'mixtures'}, {'group': 1, 'name': 'moment'}, {'group': 1, 'name': 'ballistic'}, {'group': 1, 'name': 'limit'}, {'group': 1, 'name': 'coefficient'}, {'group': 1, 'name': 'separates'}, {'group': 1, 'name': 'nozzle'}, {'group': 1, 'name': 'simple'}, {'group': 1, 'name': 'ground'}, {'group': 1, 'name': 'attack'}, {'group': 1, 'name': 'fineness'}, {'group': 1, 'name': 'satellite'}, {'group': 1, 'name': 'accuracy'}, {'group': 1, 'name': 'region'}, {'group': 1, 'name': 'tunnel'}, {'group': 1, 'name': 'stationary'}, {'group': 1, 'name': 'spherical'}, {'group': 1, 'name': 'afterbodies'}, {'group': 1, 'name': 'turbulence'}, {'group': 1, 'name': 'distributions'}, {'group': 1, 'name': 'good'}, {'group': 1, 'name': 'entropy'}, {'group': 1, 'name': 'revolution'}, {'group': 1, 'name': 'speeds'}, {'group': 1, 'name': 'combustion'}, {'group': 1, 'name': 'field'}, {'group': 1, 'name': 'flight'}, {'group': 1, 'name': 'convection'}, {'group': 1, 'name': 'navier'}, {'group': 1, 'name': 'stagnation'}, {'group': 1, 'name': 'transverse'}, {'group': 1, 'name': 'deflection'}, {'group': 1, 'name': 'reflection'}, {'group': 1, 'name': 'transition'}, {'group': 1, 'name': 'stokes'}, {'group': 1, 'name': 'conduction'}, {'group': 1, 'name': 'limitation'}, {'group': 1, 'name': 'coefficients'}, {'group': 1, 'name': 'separation'}, {'group': 1, 'name': 'angles'}, {'group': 1, 'name': 'measurements'}, {'group': 1, 'name': 'pohlhausen'}, {'group': 1, 'name': 'transitional'}, {'group': 1, 'name': 'characteristics'}, {'group': 1, 'name': 'reciprocal'}, {'group': 1, 'name': 'compressible'}, {'group': 1, 'name': 'vorticity'}, {'group': 1, 'name': 'rocket'}, {'group': 1, 'name': 'ratios'}, {'group': 1, 'name': 'comparison'}, {'group': 1, 'name': 'modifications'}, {'group': 1, 'name': 'losses'}, {'group': 1, 'name': 'shocks'}, {'group': 1, 'name': 'aspect'}, {'group': 1, 'name': 'shells'}, {'group': 1, 'name': 'assumptions'}, {'group': 1, 'name': 'shapes'}, {'group': 1, 'name': 'layers'}, {'group': 1, 'name': 'stress'}, {'group': 1, 'name': 'expressions'}, {'group': 1, 'name': 'rogers'}, {'group': 1, 'name': 'predictions'}, {'group': 1, 'name': 'orbits'}, {'group': 1, 'name': 'thrust'}, {'group': 1, 'name': 'downstream'}, {'group': 1, 'name': 'mixture'}, {'group': 1, 'name': 'discontinuous'}, {'group': 1, 'name': 'vortex'}, {'group': 1, 'name': 'magnitude'}, {'group': 1, 'name': 'convex'}, {'group': 1, 'name': 'determine'}, {'group': 1, 'name': 'deceleration'}, {'group': 1, 'name': 'elastic'}, {'group': 1, 'name': 'plastic'}, {'group': 1, 'name': 'plates'}, {'group': 1, 'name': 'profile'}, {'group': 1, 'name': 'helium'}, {'group': 1, 'name': 'adiabatic'}, {'group': 1, 'name': 'portions'}, {'group': 1, 'name': 'trajectory'}, {'group': 1, 'name': 'imperfections'}, {'group': 1, 'name': 'vehicle'}, {'group': 1, 'name': 'cylindrical'}, {'group': 1, 'name': 'isothermal'}, {'group': 1, 'name': 'infinite'}, {'group': 1, 'name': 'hemisphere'}], 'links': [{'source': 0, 'target': 2, 'value': 0.86708031044429534}, {'source': 0, 'target': 16, 'value': 0.57786094460339676}, {'source': 0, 'target': 50, 'value': 0.45915869795989134}, {'source': 0, 'target': 51, 'value': 0.43686929071269065}, {'source': 0, 'target': 44, 'value': 0.38937570698699214}, {'source': 0, 'target': 18, 'value': 0.36771144458319083}, {'source': 0, 'target': 13, 'value': 0.34099621808818203}, {'source': 0, 'target': 27, 'value': 0.33650254952196018}, {'source': 0, 'target': 52, 'value': 0.33317358135174502}, {'source': 0, 'target': 10, 'value': 0.33136893163142128}, {'source': 0, 'target': 53, 'value': 0.32733328864276334}, {'source': 0, 'target': 33, 'value': 0.32110365927721801}, {'source': 0, 'target': 19, 'value': 0.31734715652719941}, {'source': 0, 'target': 54, 'value': 0.31604036974514255}, {'source': 0, 'target': 55, 'value': 0.31574705527001456}, {'source': 0, 'target': 56, 'value': 0.31380177495832684}, {'source': 0, 'target': 6, 'value': 0.31231052219044914}, {'source': 0, 'target': 57, 'value': 0.31105704998342626}, {'source': 0, 'target': 37, 'value': 0.30565382911027117}, {'source': 0, 'target': 58, 'value': 0.29990626180235325}, {'source': 0, 'target': 17, 'value': 0.29857239398737195}, {'source': 0, 'target': 59, 'value': 0.29502559613000467}, {'source': 0, 'target': 60, 'value': 0.29329231699674579}, {'source': 1, 'target': 3, 'value': 0.47308227532630209}, {'source': 1, 'target': 22, 'value': 0.38318951317303929}, {'source': 1, 'target': 32, 'value': 0.37571596949912794}, {'source': 1, 'target': 61, 'value': 0.36708696177736622}, {'source': 1, 'target': 30, 'value': 0.36508795350802642}, {'source': 1, 'target': 62, 'value': 0.35094183531456391}, {'source': 1, 'target': 26, 'value': 0.34063643286834044}, {'source': 1, 'target': 20, 'value': 0.33646129756387361}, {'source': 1, 'target': 46, 'value': 0.33126230340225271}, {'source': 1, 'target': 63, 'value': 0.30820994818442254}, {'source': 1, 'target': 63, 'value': 0.30800114839423437}, {'source': 1, 'target': 23, 'value': 0.30707820251590617}, {'source': 1, 'target': 64, 'value': 0.30559602697242516}, {'source': 1, 'target': 12, 'value': 0.30074717682191365}, {'source': 1, 'target': 24, 'value': 0.29736480620361599}, {'source': 1, 'target': 35, 'value': 0.29258443174397075}, {'source': 1, 'target': 65, 'value': 0.29075958195915375}, {'source': 1, 'target': 66, 'value': 0.29025135407904318}, {'source': 1, 'target': 0, 'value': 0.2816988749717963}, {'source': 1, 'target': 67, 'value': 0.2807093843357869}, {'source': 1, 'target': 9, 'value': 0.27908271276523394}, {'source': 1, 'target': 2, 'value': 0.27802983581068297}, {'source': 1, 'target': 10, 'value': 0.27246061657762022}, {'source': 2, 'target': 16, 'value': 0.56037166098885238}, {'source': 2, 'target': 67, 'value': 0.3768879020866393}, {'source': 2, 'target': 44, 'value': 0.37513713659262582}, {'source': 2, 'target': 13, 'value': 0.3453989316297239}, {'source': 2, 'target': 67, 'value': 0.33719026446614575}, {'source': 2, 'target': 33, 'value': 0.33040919119440865}, {'source': 2, 'target': 67, 'value': 0.32953246137709352}, {'source': 2, 'target': 6, 'value': 0.32442410657028825}, {'source': 2, 'target': 67, 'value': 0.32246493837292528}, {'source': 2, 'target': 18, 'value': 0.32243436439959067}, {'source': 2, 'target': 67, 'value': 0.32151697920569011}, {'source': 2, 'target': 67, 'value': 0.31871650388424444}, {'source': 2, 'target': 67, 'value': 0.31855752230059076}, {'source': 2, 'target': 67, 'value': 0.31663621860547214}, {'source': 2, 'target': 10, 'value': 0.3158212530904243}, {'source': 2, 'target': 19, 'value': 0.31480609510607155}, {'source': 2, 'target': 68, 'value': 0.30416631281065565}, {'source': 2, 'target': 68, 'value': 0.30355195109136335}, {'source': 2, 'target': 68, 'value': 0.29719797880003074}, {'source': 2, 'target': 49, 'value': 0.29329339480346805}, {'source': 2, 'target': 69, 'value': 0.28775547229210485}, {'source': 3, 'target': 29, 'value': 0.62937872206470502}, {'source': 3, 'target': 46, 'value': 0.39233508872728079}, {'source': 3, 'target': 35, 'value': 0.37400181220773204}, {'source': 3, 'target': 32, 'value': 0.35928321437654825}, {'source': 3, 'target': 12, 'value': 0.34651544385840027}, {'source': 3, 'target': 69, 'value': 0.34526379950633485}, {'source': 3, 'target': 70, 'value': 0.33545872869590987}, {'source': 3, 'target': 26, 'value': 0.3335376478284795}, {'source': 3, 'target': 20, 'value': 0.33284324244550939}, {'source': 3, 'target': 5, 'value': 0.32387381453609959}, {'source': 3, 'target': 71, 'value': 0.31843841223040303}, {'source': 3, 'target': 72, 'value': 0.31690033392154465}, {'source': 3, 'target': 73, 'value': 0.31578765632506861}, {'source': 3, 'target': 9, 'value': 0.31293935662805994}, {'source': 3, 'target': 33, 'value': 0.29634849421016202}, {'source': 3, 'target': 49, 'value': 0.2933436846478778}, {'source': 3, 'target': 74, 'value': 0.27917802336348541}, {'source': 3, 'target': 24, 'value': 0.27649345711312884}, {'source': 3, 'target': 75, 'value': 0.27553925922465849}, {'source': 3, 'target': 76, 'value': 0.27503968620796237}, {'source': 4, 'target': 77, 'value': 0.31751046168258468}, {'source': 4, 'target': 78, 'value': 0.3039538826327074}, {'source': 4, 'target': 79, 'value': 0.29224734951213688}, {'source': 4, 'target': 9, 'value': 0.29029694084868279}, {'source': 4, 'target': 23, 'value': 0.28824392912652164}, {'source': 4, 'target': 79, 'value': 0.28226327048679689}, {'source': 4, 'target': 80, 'value': 0.28004545244124518}, {'source': 4, 'target': 80, 'value': 0.27725922820417043}, {'source': 4, 'target': 48, 'value': 0.27680055480090532}, {'source': 4, 'target': 81, 'value': 0.27244589458641327}, {'source': 4, 'target': 82, 'value': 0.26925999153302022}, {'source': 4, 'target': 83, 'value': 0.26604854954739576}, {'source': 4, 'target': 40, 'value': 0.26334169567697641}, {'source': 4, 'target': 84, 'value': 0.25646577644304319}, {'source': 4, 'target': 85, 'value': 0.25467886334178574}, {'source': 4, 'target': 86, 'value': 0.24838451815475801}, {'source': 4, 'target': 21, 'value': 0.24799959401312444}, {'source': 4, 'target': 87, 'value': 0.24373577341135316}, {'source': 4, 'target': 3, 'value': 0.2416875981692862}, {'source': 4, 'target': 88, 'value': 0.23904065297820404}, {'source': 4, 'target': 1, 'value': 0.23843174894648111}, {'source': 5, 'target': 43, 'value': 0.57465397683335273}, {'source': 5, 'target': 89, 'value': 0.39778073563155769}, {'source': 5, 'target': 90, 'value': 0.35880283221016024}, {'source': 5, 'target': 91, 'value': 0.30490634166181846}, {'source': 5, 'target': 21, 'value': 0.30486785045390818}, {'source': 5, 'target': 91, 'value': 0.30008927240002992}, {'source': 5, 'target': 92, 'value': 0.29789251038941067}, {'source': 5, 'target': 93, 'value': 0.2946761496341071}, {'source': 5, 'target': 94, 'value': 0.27399834704291026}, {'source': 5, 'target': 12, 'value': 0.26164388950393319}, {'source': 5, 'target': 95, 'value': 0.26087458826261162}, {'source': 5, 'target': 2, 'value': 0.25853727840202606}, {'source': 5, 'target': 96, 'value': 0.25544805031654499}, {'source': 5, 'target': 97, 'value': 0.25120392808905129}, {'source': 5, 'target': 98, 'value': 0.24552723700202675}, {'source': 5, 'target': 27, 'value': 0.24519860801109819}, {'source': 5, 'target': 99, 'value': 0.23988690649015745}, {'source': 5, 'target': 100, 'value': 0.23818098995633033}, {'source': 5, 'target': 35, 'value': 0.23494569288052933}, {'source': 5, 'target': 1, 'value': 0.23355018729795665}, {'source': 6, 'target': 13, 'value': 0.84478269976473108}, {'source': 6, 'target': 14, 'value': 0.43967507919935889}, {'source': 6, 'target': 16, 'value': 0.40076176733974644}, {'source': 6, 'target': 101, 'value': 0.34978336028804724}, {'source': 6, 'target': 101, 'value': 0.34752081631766263}, {'source': 6, 'target': 102, 'value': 0.32614737595376625}, {'source': 6, 'target': 103, 'value': 0.31023005263174902}, {'source': 6, 'target': 104, 'value': 0.28725301413742793}, {'source': 6, 'target': 104, 'value': 0.28309950414091573}, {'source': 6, 'target': 104, 'value': 0.27316656776005499}, {'source': 6, 'target': 104, 'value': 0.26950333433164325}, {'source': 6, 'target': 10, 'value': 0.26737006340666886}, {'source': 6, 'target': 104, 'value': 0.26463393475888231}, {'source': 6, 'target': 105, 'value': 0.25153942078885544}, {'source': 6, 'target': 105, 'value': 0.23753832635187902}, {'source': 6, 'target': 106, 'value': 0.23729654155308605}, {'source': 6, 'target': 41, 'value': 0.22501940190918596}, {'source': 6, 'target': 27, 'value': 0.21536598032622242}, {'source': 6, 'target': 33, 'value': 0.21415513896873811}, {'source': 6, 'target': 107, 'value': 0.21351496557964708}, {'source': 7, 'target': 108, 'value': 0.35183392903243838}, {'source': 7, 'target': 109, 'value': 0.32929954973127651}, {'source': 7, 'target': 110, 'value': 0.28688565048242098}, {'source': 7, 'target': 111, 'value': 0.28243166502254141}, {'source': 7, 'target': 37, 'value': 0.27648564777656592}, {'source': 7, 'target': 17, 'value': 0.27594165998860276}, {'source': 7, 'target': 30, 'value': 0.27049002444820075}, {'source': 7, 'target': 111, 'value': 0.26982346127508589}, {'source': 7, 'target': 112, 'value': 0.25602490509746884}, {'source': 7, 'target': 113, 'value': 0.24949921476897871}, {'source': 7, 'target': 114, 'value': 0.24930461136120663}, {'source': 7, 'target': 115, 'value': 0.24463130026436317}, {'source': 7, 'target': 115, 'value': 0.24178192706525656}, {'source': 7, 'target': 0, 'value': 0.23254147035510581}, {'source': 7, 'target': 19, 'value': 0.23054465230687898}, {'source': 7, 'target': 115, 'value': 0.22567275949434865}, {'source': 7, 'target': 115, 'value': 0.22413422954850673}, {'source': 7, 'target': 116, 'value': 0.22289600531570639}, {'source': 7, 'target': 116, 'value': 0.22274971389722745}, {'source': 8, 'target': 117, 'value': 0.41338397935334159}, {'source': 8, 'target': 118, 'value': 0.36286078855189657}, {'source': 8, 'target': 11, 'value': 0.35348949190611589}, {'source': 8, 'target': 119, 'value': 0.33641035109134693}, {'source': 8, 'target': 46, 'value': 0.31647540611009728}, {'source': 8, 'target': 120, 'value': 0.31268776301633605}, {'source': 8, 'target': 20, 'value': 0.30173872669710872}, {'source': 8, 'target': 121, 'value': 0.30087669508806442}, {'source': 8, 'target': 122, 'value': 0.29540009302272902}, {'source': 8, 'target': 34, 'value': 0.29365969488446098}, {'source': 8, 'target': 123, 'value': 0.29123410301576291}, {'source': 8, 'target': 124, 'value': 0.28155558311059914}, {'source': 8, 'target': 125, 'value': 0.27359484455264382}, {'source': 8, 'target': 126, 'value': 0.27174062772157931}, {'source': 8, 'target': 127, 'value': 0.26833948457971124}, {'source': 8, 'target': 128, 'value': 0.25927540230778373}, {'source': 8, 'target': 129, 'value': 0.25646064710635741}, {'source': 8, 'target': 130, 'value': 0.25268932275040468}, {'source': 8, 'target': 131, 'value': 0.24643998635195286}, {'source': 8, 'target': 132, 'value': 0.24486798219656153}, {'source': 8, 'target': 47, 'value': 0.24234335365316739}, {'source': 8, 'target': 133, 'value': 0.2392344037951542}, {'source': 9, 'target': 134, 'value': 0.33434256448225735}, {'source': 9, 'target': 135, 'value': 0.27731738856010002}, {'source': 9, 'target': 11, 'value': 0.25318355130248449}, {'source': 9, 'target': 32, 'value': 0.2364695272798899}, {'source': 9, 'target': 31, 'value': 0.23489910731471322}, {'source': 9, 'target': 135, 'value': 0.22579609985277221}, {'source': 9, 'target': 29, 'value': 0.2235682249575886}, {'source': 9, 'target': 135, 'value': 0.22090878680702941}, {'source': 9, 'target': 136, 'value': 0.21797618675745931}, {'source': 9, 'target': 12, 'value': 0.21717506975787962}, {'source': 9, 'target': 137, 'value': 0.21615849097122738}, {'source': 9, 'target': 138, 'value': 0.21253044113658578}, {'source': 9, 'target': 46, 'value': 0.21116099236577063}, {'source': 9, 'target': 138, 'value': 0.20857514936028751}, {'source': 9, 'target': 139, 'value': 0.20564288054419641}, {'source': 9, 'target': 139, 'value': 0.20554272550456507}, {'source': 9, 'target': 139, 'value': 0.20203279220545034}, {'source': 9, 'target': 139, 'value': 0.19485703274225347}, {'source': 9, 'target': 40, 'value': 0.19440891325430121}, {'source': 10, 'target': 27, 'value': 0.27605322640278224}, {'source': 10, 'target': 30, 'value': 0.26740094765258809}, {'source': 10, 'target': 13, 'value': 0.25673590952282094}, {'source': 10, 'target': 16, 'value': 0.25268046774260167}, {'source': 10, 'target': 3, 'value': 0.25176282961536384}, {'source': 10, 'target': 14, 'value': 0.2464298977205219}, {'source': 10, 'target': 140, 'value': 0.2327246125840246}, {'source': 10, 'target': 140, 'value': 0.23161198384258697}, {'source': 10, 'target': 140, 'value': 0.23069342122860856}, {'source': 10, 'target': 141, 'value': 0.22625275760956026}, {'source': 10, 'target': 49, 'value': 0.22316959712277687}, {'source': 10, 'target': 141, 'value': 0.22008195580791889}, {'source': 10, 'target': 7, 'value': 0.21828128447558418}, {'source': 10, 'target': 141, 'value': 0.21826538022425249}, {'source': 10, 'target': 46, 'value': 0.21544612636526358}, {'source': 10, 'target': 12, 'value': 0.21525601386059032}, {'source': 10, 'target': 141, 'value': 0.21358989413412727}, {'source': 10, 'target': 142, 'value': 0.21199259600692213}, {'source': 11, 'target': 142, 'value': 0.35555484444245727}, {'source': 11, 'target': 142, 'value': 0.3470283681624356}, {'source': 11, 'target': 142, 'value': 0.34275706986201959}, {'source': 11, 'target': 142, 'value': 0.3279330234387835}, {'source': 11, 'target': 143, 'value': 0.2783188255462099}, {'source': 11, 'target': 40, 'value': 0.27492712007235171}, {'source': 11, 'target': 144, 'value': 0.26334790288849191}, {'source': 11, 'target': 144, 'value': 0.26333212520207627}, {'source': 11, 'target': 45, 'value': 0.23302437729124537}, {'source': 11, 'target': 21, 'value': 0.22915972745574514}, {'source': 11, 'target': 144, 'value': 0.22842879236886032}, {'source': 11, 'target': 144, 'value': 0.22735269071287442}, {'source': 11, 'target': 145, 'value': 0.2217764794078021}, {'source': 11, 'target': 7, 'value': 0.21831840409283795}, {'source': 11, 'target': 145, 'value': 0.21670412573358711}, {'source': 11, 'target': 4, 'value': 0.21169884425405927}, {'source': 11, 'target': 1, 'value': 0.21140168363187423}, {'source': 11, 'target': 146, 'value': 0.20894178128177074}, {'source': 11, 'target': 3, 'value': 0.20798826748334429}, {'source': 11, 'target': 146, 'value': 0.20416567723819803}, {'source': 11, 'target': 146, 'value': 0.20395093860147592}, {'source': 11, 'target': 41, 'value': 0.20372749805022505}, {'source': 12, 'target': 146, 'value': 0.29000971705573325}, {'source': 12, 'target': 46, 'value': 0.28755517743024689}, {'source': 12, 'target': 0, 'value': 0.28459021369077925}, {'source': 12, 'target': 29, 'value': 0.27729979137101513}, {'source': 12, 'target': 20, 'value': 0.27260586139046594}, {'source': 12, 'target': 2, 'value': 0.2698952757514203}, {'source': 12, 'target': 36, 'value': 0.25204101594282713}, {'source': 12, 'target': 146, 'value': 0.24921929631409906}, {'source': 12, 'target': 48, 'value': 0.24698605534030035}, {'source': 12, 'target': 22, 'value': 0.24591432932197679}, {'source': 12, 'target': 24, 'value': 0.24570153146241824}, {'source': 12, 'target': 146, 'value': 0.23894827619855574}, {'source': 12, 'target': 32, 'value': 0.23722766116337893}, {'source': 12, 'target': 23, 'value': 0.23715637743883439}, {'source': 12, 'target': 35, 'value': 0.23573229829019254}, {'source': 12, 'target': 147, 'value': 0.23164264423286063}, {'source': 12, 'target': 33, 'value': 0.22959931615327181}, {'source': 12, 'target': 147, 'value': 0.22790314646218437}, {'source': 12, 'target': 4, 'value': 0.22163709704393478}, {'source': 13, 'target': 16, 'value': 0.41805413999064051}, {'source': 13, 'target': 147, 'value': 0.39943607868495451}, {'source': 13, 'target': 14, 'value': 0.36993455363857786}, {'source': 13, 'target': 147, 'value': 0.34978765164191727}, {'source': 13, 'target': 148, 'value': 0.32667131590588383}, {'source': 13, 'target': 148, 'value': 0.30796446067065286}, {'source': 13, 'target': 148, 'value': 0.29633894044839904}, {'source': 13, 'target': 148, 'value': 0.27994596699235447}, {'source': 13, 'target': 148, 'value': 0.26706451913832219}, {'source': 13, 'target': 148, 'value': 0.26348311574012356}, {'source': 13, 'target': 148, 'value': 0.26178466417048135}, {'source': 13, 'target': 148, 'value': 0.26040467794740318}, {'source': 13, 'target': 148, 'value': 0.2414305472684258}, {'source': 13, 'target': 149, 'value': 0.23926087476268321}, {'source': 13, 'target': 44, 'value': 0.2354880346927353}, {'source': 13, 'target': 150, 'value': 0.22576072076886786}, {'source': 13, 'target': 33, 'value': 0.21845155992177859}, {'source': 13, 'target': 151, 'value': 0.21561133374723837}, {'source': 13, 'target': 151, 'value': 0.21288039205551423}, {'source': 14, 'target': 151, 'value': 0.42117568590612942}, {'source': 14, 'target': 152, 'value': 0.4167616802383764}, {'source': 14, 'target': 16, 'value': 0.30566005634358712}, {'source': 14, 'target': 153, 'value': 0.30391247258037224}, {'source': 14, 'target': 153, 'value': 0.29616478375507543}, {'source': 14, 'target': 154, 'value': 0.28805142093577235}, {'source': 14, 'target': 0, 'value': 0.28072359661714369}, {'source': 14, 'target': 41, 'value': 0.26258362812446034}, {'source': 14, 'target': 2, 'value': 0.26003226164787197}, {'source': 14, 'target': 155, 'value': 0.25651709050745025}, {'source': 14, 'target': 156, 'value': 0.25349299030915001}, {'source': 14, 'target': 156, 'value': 0.24158172875302003}, {'source': 14, 'target': 157, 'value': 0.23915797240530887}, {'source': 14, 'target': 158, 'value': 0.23756872587380001}, {'source': 14, 'target': 159, 'value': 0.23265922025799823}, {'source': 14, 'target': 159, 'value': 0.2316232561424337}, {'source': 14, 'target': 160, 'value': 0.22949754945105286}, {'source': 14, 'target': 37, 'value': 0.22589763914101338}, {'source': 14, 'target': 161, 'value': 0.21962445321897017}, {'source': 14, 'target': 161, 'value': 0.21889458389969091}, {'source': 15, 'target': 161, 'value': 0.32460779577010263}, {'source': 15, 'target': 0, 'value': 0.30542873115889585}, {'source': 15, 'target': 7, 'value': 0.29993361322093237}, {'source': 15, 'target': 2, 'value': 0.28865951338855522}, {'source': 15, 'target': 1, 'value': 0.28566547612231369}, {'source': 15, 'target': 37, 'value': 0.27984577847893877}, {'source': 15, 'target': 41, 'value': 0.26743449699444194}, {'source': 15, 'target': 10, 'value': 0.26713073319224456}, {'source': 15, 'target': 4, 'value': 0.26428678834211067}, {'source': 15, 'target': 27, 'value': 0.26181278859781254}, {'source': 15, 'target': 33, 'value': 0.25907681956984113}, {'source': 15, 'target': 35, 'value': 0.25545585476512017}, {'source': 15, 'target': 23, 'value': 0.25087885047807834}, {'source': 15, 'target': 38, 'value': 0.2472077525130465}, {'source': 15, 'target': 17, 'value': 0.24656125858408637}, {'source': 15, 'target': 162, 'value': 0.24052949241802205}, {'source': 15, 'target': 19, 'value': 0.23596943845534873}, {'source': 15, 'target': 3, 'value': 0.23445749773249894}, {'source': 15, 'target': 30, 'value': 0.23356193709216641}, {'source': 15, 'target': 163, 'value': 0.23155721821765543}, {'source': 15, 'target': 164, 'value': 0.230483762863917}, {'source': 15, 'target': 18, 'value': 0.23040146298266792}, {'source': 16, 'target': 164, 'value': 0.34280172233134032}, {'source': 16, 'target': 164, 'value': 0.33977275295209991}, {'source': 16, 'target': 165, 'value': 0.33504158815112711}, {'source': 16, 'target': 44, 'value': 0.33182294986889893}, {'source': 16, 'target': 18, 'value': 0.32989932235665081}, {'source': 16, 'target': 165, 'value': 0.3087065956993158}, {'source': 16, 'target': 166, 'value': 0.30685326367004567}, {'source': 16, 'target': 166, 'value': 0.28701445812741594}, {'source': 16, 'target': 167, 'value': 0.25724787771376323}, {'source': 16, 'target': 167, 'value': 0.24953704024199744}, {'source': 16, 'target': 168, 'value': 0.24288355560308528}, {'source': 16, 'target': 168, 'value': 0.24283093212859114}, {'source': 16, 'target': 37, 'value': 0.24226342728662825}, {'source': 16, 'target': 49, 'value': 0.23925154475689964}, {'source': 16, 'target': 30, 'value': 0.23746198181309722}, {'source': 16, 'target': 32, 'value': 0.23713539386763874}, {'source': 16, 'target': 41, 'value': 0.23355069836692355}, {'source': 16, 'target': 168, 'value': 0.22934991864014331}, {'source': 17, 'target': 168, 'value': 0.35639939952088628}, {'source': 17, 'target': 19, 'value': 0.3328822954178402}, {'source': 17, 'target': 39, 'value': 0.31579841706514655}, {'source': 17, 'target': 169, 'value': 0.30900312668733887}, {'source': 17, 'target': 169, 'value': 0.30406792489021173}, {'source': 17, 'target': 18, 'value': 0.27900773578841598}, {'source': 17, 'target': 169, 'value': 0.26231400781718561}, {'source': 17, 'target': 169, 'value': 0.26091557006297789}, {'source': 17, 'target': 2, 'value': 0.25246155057644232}, {'source': 17, 'target': 170, 'value': 0.25153351659214296}, {'source': 17, 'target': 41, 'value': 0.24572545860198028}, {'source': 17, 'target': 171, 'value': 0.24430013465776237}, {'source': 17, 'target': 37, 'value': 0.2347666442765092}, {'source': 17, 'target': 30, 'value': 0.23471112639192479}, {'source': 17, 'target': 172, 'value': 0.23198024589171257}, {'source': 17, 'target': 173, 'value': 0.23158796194158168}, {'source': 17, 'target': 174, 'value': 0.22306329653954959}, {'source': 17, 'target': 175, 'value': 0.22265697721333608}, {'source': 17, 'target': 176, 'value': 0.21676959160681761}, {'source': 17, 'target': 25, 'value': 0.21539446046247931}, {'source': 18, 'target': 30, 'value': 0.34263136704172475}, {'source': 18, 'target': 176, 'value': 0.29012452730804528}, {'source': 18, 'target': 41, 'value': 0.26739243463539186}, {'source': 18, 'target': 32, 'value': 0.26292333701490389}, {'source': 18, 'target': 177, 'value': 0.26136792018239918}, {'source': 18, 'target': 177, 'value': 0.2546811822234098}, {'source': 18, 'target': 177, 'value': 0.25143025699879873}, {'source': 18, 'target': 178, 'value': 0.25004600040086339}, {'source': 18, 'target': 178, 'value': 0.24599501667780033}, {'source': 18, 'target': 19, 'value': 0.24387940796145183}, {'source': 18, 'target': 178, 'value': 0.24017553122542698}, {'source': 18, 'target': 178, 'value': 0.23835466257629126}, {'source': 18, 'target': 179, 'value': 0.23511387983785503}, {'source': 18, 'target': 179, 'value': 0.2305644142269489}, {'source': 18, 'target': 179, 'value': 0.22918878829583209}, {'source': 18, 'target': 1, 'value': 0.22481252859150461}, {'source': 18, 'target': 180, 'value': 0.22221908616123692}, {'source': 18, 'target': 37, 'value': 0.21876036031765855}, {'source': 18, 'target': 181, 'value': 0.21796311046794115}, {'source': 19, 'target': 181, 'value': 0.42189685402606569}, {'source': 19, 'target': 37, 'value': 0.37371477532034503}, {'source': 19, 'target': 181, 'value': 0.34152337648896391}, {'source': 19, 'target': 182, 'value': 0.30061689760960969}, {'source': 19, 'target': 183, 'value': 0.27602786107957994}, {'source': 19, 'target': 183, 'value': 0.27265894654813622}, {'source': 19, 'target': 184, 'value': 0.26841300195339102}, {'source': 19, 'target': 184, 'value': 0.24557719554995763}, {'source': 19, 'target': 41, 'value': 0.24346964442429511}, {'source': 19, 'target': 184, 'value': 0.23704972639571451}, {'source': 19, 'target': 184, 'value': 0.23363012249588558}, {'source': 19, 'target': 184, 'value': 0.22198629536240208}, {'source': 19, 'target': 48, 'value': 0.21940667092267435}, {'source': 19, 'target': 27, 'value': 0.21685302833859818}, {'source': 20, 'target': 184, 'value': 0.57459969698391511}, {'source': 20, 'target': 184, 'value': 0.33932580557427661}, {'source': 20, 'target': 34, 'value': 0.32485364097497071}, {'source': 20, 'target': 22, 'value': 0.30889487841094765}, {'source': 20, 'target': 45, 'value': 0.30580476526551731}, {'source': 20, 'target': 184, 'value': 0.29959503499010548}, {'source': 20, 'target': 185, 'value': 0.29214767592822732}, {'source': 20, 'target': 46, 'value': 0.29161542520867795}, {'source': 20, 'target': 186, 'value': 0.28906796294263049}, {'source': 20, 'target': 32, 'value': 0.28211017707546532}, {'source': 20, 'target': 186, 'value': 0.27151540171155697}, {'source': 20, 'target': 187, 'value': 0.25880617923305055}, {'source': 20, 'target': 187, 'value': 0.25282707174518015}, {'source': 20, 'target': 188, 'value': 0.25205129713413349}, {'source': 20, 'target': 35, 'value': 0.25070047769678483}, {'source': 20, 'target': 188, 'value': 0.24324008694749291}, {'source': 20, 'target': 188, 'value': 0.24035222022161232}, {'source': 20, 'target': 188, 'value': 0.23778512603958218}, {'source': 20, 'target': 189, 'value': 0.23354631386461638}, {'source': 21, 'target': 189, 'value': 0.38998013010017119}, {'source': 21, 'target': 190, 'value': 0.38324572959138009}, {'source': 21, 'target': 40, 'value': 0.35333303614765726}, {'source': 21, 'target': 190, 'value': 0.3323473402767958}, {'source': 21, 'target': 191, 'value': 0.28870704799712349}, {'source': 21, 'target': 192, 'value': 0.28702713421669079}, {'source': 21, 'target': 2, 'value': 0.2724202227632167}, {'source': 21, 'target': 192, 'value': 0.2691845390571041}, {'source': 21, 'target': 192, 'value': 0.26259354466149043}, {'source': 21, 'target': 192, 'value': 0.26178756593989361}, {'source': 21, 'target': 192, 'value': 0.25231202118261237}, {'source': 21, 'target': 192, 'value': 0.24960199129077656}, {'source': 21, 'target': 43, 'value': 0.22917421285495473}, {'source': 21, 'target': 193, 'value': 0.22889176734422095}, {'source': 21, 'target': 193, 'value': 0.22360437150043047}, {'source': 21, 'target': 194, 'value': 0.22264674666531442}, {'source': 21, 'target': 195, 'value': 0.21375011730865801}, {'source': 21, 'target': 195, 'value': 0.2125084214965699}, {'source': 21, 'target': 196, 'value': 0.21156308091319437}, {'source': 21, 'target': 196, 'value': 0.21091786297853468}, {'source': 22, 'target': 196, 'value': 0.53934939575950647}, {'source': 22, 'target': 197, 'value': 0.40112406205570972}, {'source': 22, 'target': 32, 'value': 0.38687244569141688}, {'source': 22, 'target': 198, 'value': 0.36952802295101095}, {'source': 22, 'target': 198, 'value': 0.36367459397671403}, {'source': 22, 'target': 199, 'value': 0.33647402800961307}, {'source': 22, 'target': 200, 'value': 0.3348624882125541}, {'source': 22, 'target': 26, 'value': 0.30180092249304724}, {'source': 22, 'target': 201, 'value': 0.30076094326405634}, {'source': 22, 'target': 201, 'value': 0.28530696980917447}, {'source': 22, 'target': 3, 'value': 0.27369190219304362}, {'source': 22, 'target': 202, 'value': 0.26822693742275761}, {'source': 22, 'target': 202, 'value': 0.25905630569102661}, {'source': 22, 'target': 203, 'value': 0.24113216560415085}, {'source': 22, 'target': 204, 'value': 0.23024515265955525}, {'source': 22, 'target': 205, 'value': 0.22588724354335415}, {'source': 22, 'target': 206, 'value': 0.22429405714762407}, {'source': 22, 'target': 207, 'value': 0.22339819396584754}, {'source': 23, 'target': 207, 'value': 0.42111069113600835}, {'source': 23, 'target': 207, 'value': 0.35789070022601133}, {'source': 23, 'target': 46, 'value': 0.33290519454996781}, {'source': 23, 'target': 35, 'value': 0.27840430798209387}, {'source': 23, 'target': 3, 'value': 0.27488660947900023}, {'source': 23, 'target': 207, 'value': 0.27027121941792859}, {'source': 23, 'target': 208, 'value': 0.24243118135459199}, {'source': 23, 'target': 209, 'value': 0.23352733720398636}, {'source': 23, 'target': 29, 'value': 0.23063750876717018}, {'source': 23, 'target': 209, 'value': 0.22936663456272841}, {'source': 23, 'target': 24, 'value': 0.22824304029847794}, {'source': 23, 'target': 209, 'value': 0.22719541078416158}, {'source': 23, 'target': 0, 'value': 0.22360426467936942}, {'source': 23, 'target': 27, 'value': 0.22068852062490721}, {'source': 23, 'target': 209, 'value': 0.21844923405263558}, {'source': 23, 'target': 210, 'value': 0.21581320098969223}, {'source': 24, 'target': 211, 'value': 0.26552621938323806}, {'source': 24, 'target': 0, 'value': 0.24622436221250255}, {'source': 24, 'target': 2, 'value': 0.23875921690291729}, {'source': 24, 'target': 211, 'value': 0.22649838577756476}, {'source': 24, 'target': 33, 'value': 0.22520778617923826}, {'source': 24, 'target': 31, 'value': 0.22317499730534565}, {'source': 24, 'target': 212, 'value': 0.21756385326330993}, {'source': 24, 'target': 212, 'value': 0.21342427941368608}, {'source': 24, 'target': 212, 'value': 0.21033022795936998}, {'source': 24, 'target': 46, 'value': 0.20903949234704339}, {'source': 24, 'target': 48, 'value': 0.20750118952802671}, {'source': 24, 'target': 20, 'value': 0.2040827589282794}, {'source': 24, 'target': 212, 'value': 0.20371667044491987}, {'source': 24, 'target': 212, 'value': 0.20291272535718446}, {'source': 24, 'target': 16, 'value': 0.20248208512506513}, {'source': 24, 'target': 212, 'value': 0.19989600089125117}, {'source': 24, 'target': 213, 'value': 0.19165610920612444}, {'source': 24, 'target': 214, 'value': 0.1910073388201369}, {'source': 24, 'target': 35, 'value': 0.19061432450023688}, {'source': 25, 'target': 49, 'value': 0.62320755580360665}, {'source': 25, 'target': 0, 'value': 0.29022661206569977}, {'source': 25, 'target': 2, 'value': 0.27393322651005492}, {'source': 25, 'target': 26, 'value': 0.26036705611189565}, {'source': 25, 'target': 32, 'value': 0.2354557781307425}, {'source': 25, 'target': 214, 'value': 0.22729336242562076}, {'source': 25, 'target': 16, 'value': 0.22701533689550424}, {'source': 25, 'target': 39, 'value': 0.2265680237954639}, {'source': 25, 'target': 214, 'value': 0.19640638549805831}, {'source': 25, 'target': 215, 'value': 0.19600158307197929}, {'source': 25, 'target': 216, 'value': 0.19353026336298357}, {'source': 25, 'target': 47, 'value': 0.19350095764394545}, {'source': 25, 'target': 1, 'value': 0.18911759047142618}, {'source': 25, 'target': 217, 'value': 0.18873607482048416}, {'source': 25, 'target': 217, 'value': 0.18687826016245193}, {'source': 25, 'target': 218, 'value': 0.18634456834425872}, {'source': 25, 'target': 219, 'value': 0.1817458498271329}, {'source': 25, 'target': 220, 'value': 0.18086768449910309}, {'source': 25, 'target': 13, 'value': 0.18014156333662026}, {'source': 25, 'target': 220, 'value': 0.17971116612597915}, {'source': 26, 'target': 32, 'value': 0.51462847756922536}, {'source': 26, 'target': 221, 'value': 0.28638380324638907}, {'source': 26, 'target': 221, 'value': 0.28524221609348799}, {'source': 26, 'target': 49, 'value': 0.25747373748041175}, {'source': 26, 'target': 2, 'value': 0.25486510117563216}, {'source': 26, 'target': 221, 'value': 0.2420552764613004}, {'source': 26, 'target': 41, 'value': 0.23690496257776891}, {'source': 26, 'target': 221, 'value': 0.23671942971266494}, {'source': 26, 'target': 222, 'value': 0.22570166182720214}, {'source': 26, 'target': 20, 'value': 0.22507806337455705}, {'source': 26, 'target': 46, 'value': 0.21998463279015193}, {'source': 26, 'target': 223, 'value': 0.21435475454923247}, {'source': 26, 'target': 35, 'value': 0.21417088649328309}, {'source': 26, 'target': 29, 'value': 0.2123572218415388}, {'source': 26, 'target': 0, 'value': 0.21179580228666675}, {'source': 26, 'target': 223, 'value': 0.21094484305627101}, {'source': 26, 'target': 224, 'value': 0.20569814794924052}, {'source': 27, 'target': 2, 'value': 0.2558939656637898}, {'source': 27, 'target': 224, 'value': 0.2342688817063909}, {'source': 27, 'target': 1, 'value': 0.231386015678021}, {'source': 27, 'target': 224, 'value': 0.23036575942142115}, {'source': 27, 'target': 48, 'value': 0.22666166382929748}, {'source': 27, 'target': 224, 'value': 0.22614240035096286}, {'source': 27, 'target': 37, 'value': 0.2249135000692544}, {'source': 27, 'target': 41, 'value': 0.22041723669232496}, {'source': 27, 'target': 12, 'value': 0.21819447265414163}, {'source': 27, 'target': 36, 'value': 0.21722458442613268}, {'source': 27, 'target': 13, 'value': 0.21227050887431595}, {'source': 27, 'target': 14, 'value': 0.21095436214142949}, {'source': 27, 'target': 46, 'value': 0.20891382318026819}, {'source': 27, 'target': 224, 'value': 0.20832960350728413}, {'source': 27, 'target': 21, 'value': 0.20810793379396361}, {'source': 27, 'target': 224, 'value': 0.20387316376734174}, {'source': 28, 'target': 224, 'value': 0.26845010712519385}, {'source': 28, 'target': 1, 'value': 0.26810551888945089}, {'source': 28, 'target': 224, 'value': 0.26667064816266445}, {'source': 28, 'target': 23, 'value': 0.25635938291542376}, {'source': 28, 'target': 27, 'value': 0.25260031791787918}, {'source': 28, 'target': 224, 'value': 0.23865032820169263}, {'source': 28, 'target': 19, 'value': 0.23506661351027552}, {'source': 28, 'target': 224, 'value': 0.23467193845543918}, {'source': 28, 'target': 7, 'value': 0.23434420515359419}, {'source': 28, 'target': 2, 'value': 0.23021125911893117}, {'source': 28, 'target': 0, 'value': 0.2295970663192681}, {'source': 28, 'target': 225, 'value': 0.21589715008395657}, {'source': 28, 'target': 12, 'value': 0.21484751238011146}, {'source': 28, 'target': 6, 'value': 0.21230210363943233}, {'source': 28, 'target': 37, 'value': 0.21131141433527367}, {'source': 28, 'target': 46, 'value': 0.2110440347937679}, {'source': 28, 'target': 35, 'value': 0.20578861822859312}, {'source': 28, 'target': 226, 'value': 0.20249319442593594}, {'source': 28, 'target': 4, 'value': 0.19898738759591716}, {'source': 28, 'target': 3, 'value': 0.1984473711591456}, {'source': 29, 'target': 33, 'value': 0.52679469021649961}, {'source': 29, 'target': 226, 'value': 0.30080500573743796}, {'source': 29, 'target': 0, 'value': 0.27860706416949604}, {'source': 29, 'target': 36, 'value': 0.27115968755495778}, {'source': 29, 'target': 226, 'value': 0.26941556187684595}, {'source': 29, 'target': 35, 'value': 0.26660271268251901}, {'source': 29, 'target': 1, 'value': 0.26482772688511563}, {'source': 29, 'target': 226, 'value': 0.25171324955801483}, {'source': 29, 'target': 226, 'value': 0.25045550036013314}, {'source': 29, 'target': 2, 'value': 0.24930264020151816}, {'source': 29, 'target': 226, 'value': 0.2340983012326974}, {'source': 29, 'target': 226, 'value': 0.2282877901210022}, {'source': 29, 'target': 46, 'value': 0.22813364988226803}, {'source': 29, 'target': 226, 'value': 0.22382238169612295}, {'source': 29, 'target': 226, 'value': 0.22332895465458791}, {'source': 29, 'target': 20, 'value': 0.22205468061975889}, {'source': 29, 'target': 226, 'value': 0.21983860037890063}, {'source': 30, 'target': 0, 'value': 0.24782090365459505}, {'source': 30, 'target': 2, 'value': 0.23634427174764713}, {'source': 30, 'target': 41, 'value': 0.21375993193302986}, {'source': 30, 'target': 226, 'value': 0.21039478148776605}, {'source': 30, 'target': 3, 'value': 0.20852821538214511}, {'source': 30, 'target': 32, 'value': 0.20777447335006627}, {'source': 30, 'target': 14, 'value': 0.20650587573108195}, {'source': 30, 'target': 226, 'value': 0.20534530673205967}, {'source': 30, 'target': 13, 'value': 0.20329152285329299}, {'source': 30, 'target': 226, 'value': 0.20322705571445368}, {'source': 30, 'target': 4, 'value': 0.20222828633684645}, {'source': 30, 'target': 6, 'value': 0.19458668747212393}, {'source': 31, 'target': 227, 'value': 0.27840890922764516}, {'source': 31, 'target': 0, 'value': 0.26686771550993516}, {'source': 31, 'target': 2, 'value': 0.2475643984200068}, {'source': 31, 'target': 48, 'value': 0.23871457478564345}, {'source': 31, 'target': 228, 'value': 0.2303928561030118}, {'source': 31, 'target': 228, 'value': 0.22883494715012159}, {'source': 31, 'target': 228, 'value': 0.22840797854123313}, {'source': 31, 'target': 228, 'value': 0.22025908966165883}, {'source': 31, 'target': 18, 'value': 0.21706945830684915}, {'source': 31, 'target': 228, 'value': 0.20604930770158172}, {'source': 31, 'target': 228, 'value': 0.20401769605602851}, {'source': 31, 'target': 7, 'value': 0.20319027072655832}, {'source': 31, 'target': 41, 'value': 0.19635531140935447}, {'source': 31, 'target': 12, 'value': 0.19554812263225441}, {'source': 31, 'target': 16, 'value': 0.19442998583871057}, {'source': 31, 'target': 44, 'value': 0.19289010277406071}, {'source': 31, 'target': 27, 'value': 0.19252719313430286}, {'source': 31, 'target': 228, 'value': 0.19206929382608615}, {'source': 31, 'target': 3, 'value': 0.1915013582675025}, {'source': 31, 'target': 32, 'value': 0.19149067265690456}, {'source': 31, 'target': 228, 'value': 0.18857758840418809}, {'source': 31, 'target': 29, 'value': 0.18846756599069467}, {'source': 32, 'target': 228, 'value': 0.34806981135696136}, {'source': 32, 'target': 228, 'value': 0.30426678887785524}, {'source': 32, 'target': 49, 'value': 0.2949711949458565}, {'source': 32, 'target': 2, 'value': 0.28144828010448969}, {'source': 32, 'target': 0, 'value': 0.27904990705511301}, {'source': 32, 'target': 228, 'value': 0.25174396722310133}, {'source': 32, 'target': 46, 'value': 0.2329756362682367}, {'source': 32, 'target': 228, 'value': 0.23112631112876691}, {'source': 32, 'target': 228, 'value': 0.22005397529906606}, {'source': 32, 'target': 41, 'value': 0.21437123240964018}, {'source': 32, 'target': 229, 'value': 0.2105861167373945}, {'source': 33, 'target': 229, 'value': 0.49868357507319633}, {'source': 33, 'target': 35, 'value': 0.30607969828348702}, {'source': 33, 'target': 229, 'value': 0.28655520023392606}, {'source': 33, 'target': 44, 'value': 0.27955667406302082}, {'source': 33, 'target': 229, 'value': 0.26969696969696988}, {'source': 33, 'target': 229, 'value': 0.26902659549196734}, {'source': 33, 'target': 229, 'value': 0.26491227853684163}, {'source': 33, 'target': 229, 'value': 0.25403411844343537}, {'source': 33, 'target': 1, 'value': 0.24700907116940735}, {'source': 33, 'target': 229, 'value': 0.2464261257038157}, {'source': 33, 'target': 229, 'value': 0.24116476235195849}, {'source': 33, 'target': 229, 'value': 0.23079981065872524}, {'source': 33, 'target': 229, 'value': 0.23070591584527839}, {'source': 33, 'target': 229, 'value': 0.22338352580438511}, {'source': 34, 'target': 45, 'value': 0.47367029745603861}, {'source': 34, 'target': 229, 'value': 0.38656874368624489}, {'source': 34, 'target': 229, 'value': 0.33721939673826357}, {'source': 34, 'target': 229, 'value': 0.28872876643208778}, {'source': 34, 'target': 230, 'value': 0.28482929535805618}, {'source': 34, 'target': 231, 'value': 0.28211764484525542}, {'source': 34, 'target': 232, 'value': 0.26863174042647214}, {'source': 34, 'target': 232, 'value': 0.26833251773881689}, {'source': 34, 'target': 232, 'value': 0.24541054717816529}, {'source': 34, 'target': 232, 'value': 0.23499372676418001}, {'source': 34, 'target': 232, 'value': 0.23028425240181155}, {'source': 34, 'target': 232, 'value': 0.22560348094671182}, {'source': 34, 'target': 233, 'value': 0.22070803720453716}, {'source': 34, 'target': 233, 'value': 0.21865286624890412}, {'source': 34, 'target': 234, 'value': 0.21775124226307868}, {'source': 34, 'target': 234, 'value': 0.21189733020372786}, {'source': 34, 'target': 235, 'value': 0.20957467850695477}, {'source': 34, 'target': 235, 'value': 0.20369878630905131}, {'source': 34, 'target': 236, 'value': 0.19957231006824505}, {'source': 34, 'target': 236, 'value': 0.19604828808730479}, {'source': 35, 'target': 46, 'value': 0.26876166599044105}, {'source': 35, 'target': 236, 'value': 0.26564997382128058}, {'source': 35, 'target': 236, 'value': 0.26184124529025149}, {'source': 35, 'target': 236, 'value': 0.2535740971391483}, {'source': 35, 'target': 236, 'value': 0.25048753354567538}, {'source': 35, 'target': 237, 'value': 0.2455726745045714}, {'source': 35, 'target': 45, 'value': 0.2450344154229587}, {'source': 35, 'target': 237, 'value': 0.24059350642119143}, {'source': 35, 'target': 238, 'value': 0.23719135789429646}, {'source': 35, 'target': 238, 'value': 0.23498018272720333}, {'source': 35, 'target': 238, 'value': 0.23065289414129961}, {'source': 35, 'target': 238, 'value': 0.22570068496324955}, {'source': 35, 'target': 238, 'value': 0.22512847061806343}, {'source': 35, 'target': 238, 'value': 0.22000999514094827}, {'source': 36, 'target': 3, 'value': 0.2654127663817773}, {'source': 36, 'target': 238, 'value': 0.25355076732548959}, {'source': 36, 'target': 238, 'value': 0.23346307108777442}, {'source': 36, 'target': 38, 'value': 0.22620941060074135}, {'source': 36, 'target': 5, 'value': 0.22265872156926161}, {'source': 36, 'target': 20, 'value': 0.22043339114403276}, {'source': 36, 'target': 238, 'value': 0.21612010009268276}, {'source': 36, 'target': 10, 'value': 0.209784733403692}, {'source': 36, 'target': 239, 'value': 0.20965267337596086}, {'source': 36, 'target': 239, 'value': 0.20055976186242136}, {'source': 36, 'target': 240, 'value': 0.1996827604436146}, {'source': 36, 'target': 35, 'value': 0.19275305405004525}, {'source': 36, 'target': 240, 'value': 0.19255709562623333}, {'source': 36, 'target': 1, 'value': 0.19104158999702608}, {'source': 36, 'target': 23, 'value': 0.19098435013871715}, {'source': 36, 'target': 0, 'value': 0.19010087001591014}, {'source': 36, 'target': 7, 'value': 0.18521246162029939}, {'source': 36, 'target': 14, 'value': 0.18479390616336053}, {'source': 36, 'target': 48, 'value': 0.18476639118924726}, {'source': 37, 'target': 240, 'value': 0.33748176974408328}, {'source': 37, 'target': 240, 'value': 0.32706665939549184}, {'source': 37, 'target': 240, 'value': 0.28385422465107057}, {'source': 37, 'target': 2, 'value': 0.26959994201506765}, {'source': 37, 'target': 240, 'value': 0.26633149716277738}, {'source': 37, 'target': 41, 'value': 0.25890361540882062}, {'source': 37, 'target': 241, 'value': 0.23605379267197951}, {'source': 37, 'target': 242, 'value': 0.22951642105288159}, {'source': 37, 'target': 242, 'value': 0.22666610023813599}, {'source': 37, 'target': 242, 'value': 0.22255365003088001}, {'source': 37, 'target': 242, 'value': 0.21855190396075685}, {'source': 37, 'target': 242, 'value': 0.21538201448238092}, {'source': 37, 'target': 242, 'value': 0.21131041075062559}, {'source': 37, 'target': 242, 'value': 0.20918662508536975}, {'source': 38, 'target': 243, 'value': 0.30539562072560417}, {'source': 38, 'target': 244, 'value': 0.29958605966084523}, {'source': 38, 'target': 244, 'value': 0.29758593474387957}, {'source': 38, 'target': 245, 'value': 0.29556739901431517}, {'source': 38, 'target': 246, 'value': 0.27120833170177072}, {'source': 38, 'target': 247, 'value': 0.26306951401781475}, {'source': 38, 'target': 248, 'value': 0.25857259924827941}, {'source': 38, 'target': 248, 'value': 0.24349271436324693}, {'source': 38, 'target': 249, 'value': 0.23067502026806211}, {'source': 38, 'target': 250, 'value': 0.22575249129926273}, {'source': 38, 'target': 251, 'value': 0.22259728109199708}, {'source': 38, 'target': 251, 'value': 0.20750502927877251}, {'source': 38, 'target': 252, 'value': 0.20476219879799673}, {'source': 38, 'target': 253, 'value': 0.20134681656420728}, {'source': 38, 'target': 254, 'value': 0.19531919141928508}, {'source': 38, 'target': 1, 'value': 0.19317194646856919}, {'source': 38, 'target': 3, 'value': 0.18937539906614384}, {'source': 38, 'target': 255, 'value': 0.18782030543813477}, {'source': 38, 'target': 255, 'value': 0.18759518629183725}, {'source': 38, 'target': 256, 'value': 0.18533203845792245}, {'source': 39, 'target': 256, 'value': 0.28627918410410746}, {'source': 39, 'target': 256, 'value': 0.24460035216507336}, {'source': 39, 'target': 256, 'value': 0.22796743864822619}, {'source': 39, 'target': 0, 'value': 0.22429110540318653}, {'source': 39, 'target': 257, 'value': 0.22303882907779765}, {'source': 39, 'target': 257, 'value': 0.21828506385168517}, {'source': 39, 'target': 7, 'value': 0.21720201350659829}, {'source': 39, 'target': 19, 'value': 0.2089481405606558}, {'source': 39, 'target': 37, 'value': 0.20866119596467073}, {'source': 39, 'target': 257, 'value': 0.20765083397114048}, {'source': 39, 'target': 257, 'value': 0.20086369768148782}, {'source': 39, 'target': 27, 'value': 0.20001095276553094}, {'source': 39, 'target': 258, 'value': 0.19288225361536715}, {'source': 39, 'target': 259, 'value': 0.19110756139083346}, {'source': 39, 'target': 2, 'value': 0.19038115424603769}, {'source': 39, 'target': 41, 'value': 0.18861179952682325}, {'source': 39, 'target': 48, 'value': 0.18035085694750336}, {'source': 39, 'target': 259, 'value': 0.17724959045344763}, {'source': 40, 'target': 259, 'value': 0.43285732939444466}, {'source': 40, 'target': 259, 'value': 0.37400576753591236}, {'source': 40, 'target': 259, 'value': 0.32488206582835855}, {'source': 40, 'target': 259, 'value': 0.29655431720872}, {'source': 40, 'target': 259, 'value': 0.28120136650765837}, {'source': 40, 'target': 259, 'value': 0.26332629915143951}, {'source': 40, 'target': 260, 'value': 0.2373785509995899}, {'source': 40, 'target': 260, 'value': 0.23560481490508989}, {'source': 40, 'target': 260, 'value': 0.22501849276406141}, {'source': 40, 'target': 261, 'value': 0.22157934450689959}, {'source': 40, 'target': 262, 'value': 0.21973759495696482}, {'source': 40, 'target': 7, 'value': 0.21157776902838807}, {'source': 40, 'target': 1, 'value': 0.21096462656161077}, {'source': 40, 'target': 262, 'value': 0.21069481669477652}, {'source': 40, 'target': 23, 'value': 0.20346001298330277}, {'source': 40, 'target': 262, 'value': 0.20079063889808504}, {'source': 40, 'target': 262, 'value': 0.19960243856287807}, {'source': 40, 'target': 263, 'value': 0.19688422916455572}, {'source': 41, 'target': 263, 'value': 0.29661566235884945}, {'source': 41, 'target': 0, 'value': 0.2721204524556875}, {'source': 41, 'target': 2, 'value': 0.26802693877175943}, {'source': 41, 'target': 48, 'value': 0.25347422755649673}, {'source': 41, 'target': 263, 'value': 0.24665291746912466}, {'source': 41, 'target': 263, 'value': 0.24329704721773648}, {'source': 41, 'target': 264, 'value': 0.23826548855538737}, {'source': 41, 'target': 264, 'value': 0.23548086942780716}, {'source': 41, 'target': 264, 'value': 0.2274951836699432}, {'source': 41, 'target': 265, 'value': 0.22608767826008919}, {'source': 41, 'target': 265, 'value': 0.22525036663823586}, {'source': 41, 'target': 265, 'value': 0.22453612276636309}, {'source': 41, 'target': 265, 'value': 0.22308015018984009}, {'source': 42, 'target': 266, 'value': 0.42862132969144406}, {'source': 42, 'target': 267, 'value': 0.42271545666107291}, {'source': 42, 'target': 268, 'value': 0.42043410236084183}, {'source': 42, 'target': 269, 'value': 0.38400060111274842}, {'source': 42, 'target': 270, 'value': 0.35442986995688819}, {'source': 42, 'target': 271, 'value': 0.35019226710913426}, {'source': 42, 'target': 272, 'value': 0.34845432949753891}, {'source': 42, 'target': 272, 'value': 0.33538678518750098}, {'source': 42, 'target': 273, 'value': 0.32608319445026407}, {'source': 42, 'target': 274, 'value': 0.32356078408875261}, {'source': 42, 'target': 275, 'value': 0.30973416524556741}, {'source': 42, 'target': 276, 'value': 0.30821731958588755}, {'source': 42, 'target': 277, 'value': 0.29986812025333398}, {'source': 42, 'target': 278, 'value': 0.29352908466198219}, {'source': 42, 'target': 279, 'value': 0.28959909784064447}, {'source': 42, 'target': 280, 'value': 0.27906269286213115}, {'source': 42, 'target': 281, 'value': 0.26658327605890775}, {'source': 42, 'target': 281, 'value': 0.26575835516081842}, {'source': 42, 'target': 282, 'value': 0.26203621736388982}, {'source': 42, 'target': 283, 'value': 0.26150772997158417}, {'source': 42, 'target': 284, 'value': 0.23363891995414207}, {'source': 42, 'target': 285, 'value': 0.22692104126720924}, {'source': 42, 'target': 4, 'value': 0.22581445727345112}, {'source': 43, 'target': 286, 'value': 0.42756269152194909}, {'source': 43, 'target': 286, 'value': 0.36559449080004136}, {'source': 43, 'target': 287, 'value': 0.29744065334226477}, {'source': 43, 'target': 288, 'value': 0.27153935574149618}, {'source': 43, 'target': 288, 'value': 0.2494977500039581}, {'source': 43, 'target': 289, 'value': 0.2369794426543278}, {'source': 43, 'target': 289, 'value': 0.2176164892424072}, {'source': 43, 'target': 2, 'value': 0.21503970760972169}, {'source': 43, 'target': 290, 'value': 0.20834719448323763}, {'source': 43, 'target': 291, 'value': 0.20501342427556693}, {'source': 43, 'target': 291, 'value': 0.20409832906287334}, {'source': 43, 'target': 292, 'value': 0.20381968383980756}, {'source': 43, 'target': 3, 'value': 0.20166949185233346}, {'source': 43, 'target': 1, 'value': 0.19999245550923653}, {'source': 43, 'target': 0, 'value': 0.19237152485489808}, {'source': 43, 'target': 293, 'value': 0.19040833340275631}, {'source': 43, 'target': 294, 'value': 0.19002786289864404}, {'source': 43, 'target': 295, 'value': 0.18831492290163587}, {'source': 43, 'target': 296, 'value': 0.18412992825949723}, {'source': 43, 'target': 296, 'value': 0.1833023896137449}, {'source': 43, 'target': 297, 'value': 0.18061363254749005}, {'source': 44, 'target': 297, 'value': 0.35921527606983861}, {'source': 44, 'target': 297, 'value': 0.26368010637777201}, {'source': 44, 'target': 297, 'value': 0.260476211807803}, {'source': 44, 'target': 298, 'value': 0.24337050221600598}, {'source': 44, 'target': 298, 'value': 0.23883080187908617}, {'source': 44, 'target': 299, 'value': 0.23431983052221253}, {'source': 44, 'target': 299, 'value': 0.22920863986522369}, {'source': 44, 'target': 300, 'value': 0.21746194748849301}, {'source': 44, 'target': 301, 'value': 0.21554422150477648}, {'source': 44, 'target': 301, 'value': 0.21168101115692928}, {'source': 44, 'target': 23, 'value': 0.21162153181911825}, {'source': 44, 'target': 18, 'value': 0.2100326195645362}, {'source': 44, 'target': 301, 'value': 0.20976010520813865}, {'source': 44, 'target': 301, 'value': 0.20760233918128673}, {'source': 44, 'target': 301, 'value': 0.20749736932338461}, {'source': 44, 'target': 302, 'value': 0.20710059602701536}, {'source': 44, 'target': 302, 'value': 0.20614541289818944}, {'source': 44, 'target': 6, 'value': 0.20260197845002062}, {'source': 45, 'target': 302, 'value': 0.37660780784475512}, {'source': 45, 'target': 302, 'value': 0.36809983984309352}, {'source': 45, 'target': 303, 'value': 0.34218323514092541}, {'source': 45, 'target': 303, 'value': 0.28831386410745635}, {'source': 45, 'target': 303, 'value': 0.25813482238556601}, {'source': 45, 'target': 304, 'value': 0.24938055385549601}, {'source': 45, 'target': 304, 'value': 0.23791986671417686}, {'source': 45, 'target': 305, 'value': 0.23237964619440912}, {'source': 45, 'target': 305, 'value': 0.23172497692203686}, {'source': 45, 'target': 305, 'value': 0.22544351020016676}, {'source': 45, 'target': 306, 'value': 0.22371929507618701}, {'source': 45, 'target': 307, 'value': 0.22305274827497448}, {'source': 45, 'target': 307, 'value': 0.20854629347469733}, {'source': 45, 'target': 308, 'value': 0.2013232671737698}, {'source': 45, 'target': 3, 'value': 0.20001401722451617}, {'source': 45, 'target': 309, 'value': 0.18358672241555146}, {'source': 45, 'target': 310, 'value': 0.18070346213459998}, {'source': 45, 'target': 310, 'value': 0.17955795601969618}, {'source': 45, 'target': 1, 'value': 0.17867926229565739}, {'source': 46, 'target': 311, 'value': 0.34424511710760691}, {'source': 46, 'target': 311, 'value': 0.31961777991648854}, {'source': 46, 'target': 311, 'value': 0.30697642342217191}, {'source': 46, 'target': 311, 'value': 0.26904443998862143}, {'source': 46, 'target': 311, 'value': 0.26316787964829808}, {'source': 46, 'target': 311, 'value': 0.25092581377152784}, {'source': 46, 'target': 311, 'value': 0.24861540621731223}, {'source': 46, 'target': 311, 'value': 0.23915886348633805}, {'source': 46, 'target': 311, 'value': 0.23749099019399877}, {'source': 46, 'target': 311, 'value': 0.23463929012387374}, {'source': 47, 'target': 312, 'value': 0.30221266748789166}, {'source': 47, 'target': 312, 'value': 0.25433722608294385}, {'source': 47, 'target': 313, 'value': 0.23880739370018622}, {'source': 47, 'target': 313, 'value': 0.23722763846776018}, {'source': 47, 'target': 313, 'value': 0.23008592457286001}, {'source': 47, 'target': 314, 'value': 0.22790296974825472}, {'source': 47, 'target': 314, 'value': 0.22616587455284382}, {'source': 47, 'target': 2, 'value': 0.21543219900201299}, {'source': 47, 'target': 314, 'value': 0.21447840706994523}, {'source': 47, 'target': 3, 'value': 0.21321843413483366}, {'source': 47, 'target': 314, 'value': 0.20422758528031409}, {'source': 47, 'target': 315, 'value': 0.19965143239859756}, {'source': 47, 'target': 0, 'value': 0.19768903926959633}, {'source': 47, 'target': 315, 'value': 0.19686218888404142}, {'source': 47, 'target': 10, 'value': 0.19327379930353406}, {'source': 47, 'target': 315, 'value': 0.18825342966838196}, {'source': 47, 'target': 49, 'value': 0.18061832048325105}, {'source': 47, 'target': 21, 'value': 0.1782153627707401}, {'source': 47, 'target': 316, 'value': 0.17804243810677836}, {'source': 48, 'target': 0, 'value': 0.28577481464605137}, {'source': 48, 'target': 2, 'value': 0.28033986810262013}, {'source': 48, 'target': 316, 'value': 0.26850440729469588}, {'source': 48, 'target': 316, 'value': 0.25366315109231391}, {'source': 48, 'target': 18, 'value': 0.21376327489128144}, {'source': 48, 'target': 316, 'value': 0.21221866613596532}, {'source': 48, 'target': 316, 'value': 0.2107707023758279}, {'source': 48, 'target': 316, 'value': 0.20871458804499265}, {'source': 48, 'target': 16, 'value': 0.20633081996831143}, {'source': 48, 'target': 316, 'value': 0.20628980811784958}, {'source': 48, 'target': 5, 'value': 0.20142497228686723}, {'source': 48, 'target': 6, 'value': 0.20071505929980687}, {'source': 48, 'target': 1, 'value': 0.19824089406878911}, {'source': 48, 'target': 316, 'value': 0.19607127643397548}, {'source': 49, 'target': 0, 'value': 0.28837710114070275}, {'source': 49, 'target': 1, 'value': 0.25397546271589833}, {'source': 49, 'target': 316, 'value': 0.23229364758479518}, {'source': 49, 'target': 316, 'value': 0.23138741676655122}, {'source': 49, 'target': 316, 'value': 0.21427500048009307}, {'source': 49, 'target': 13, 'value': 0.2095470690381204}, {'source': 49, 'target': 46, 'value': 0.20182203907691942}, {'source': 49, 'target': 21, 'value': 0.19545896454993192}, {'source': 49, 'target': 317, 'value': 0.19183015882898213}, {'source': 49, 'target': 317, 'value': 0.18681776495291233}, {'source': 49, 'target': 29, 'value': 0.18494392721398717}, {'source': 49, 'target': 6, 'value': 0.18467963696727566}, {'source': 49, 'target': 317, 'value': 0.18184301532536626}, {'source': 49, 'target': 317, 'value': 0.18119301614517766}]};\n",
       "           "
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import Javascript\n",
    "#runs arbitrary javascript, client-side\n",
    "Javascript(\"\"\"\n",
    "           window.graph={};\n",
    "           \"\"\".format(graph))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "require(['d3'], function(d3){\n",
       "  //a weird idempotency thing\n",
       "  $(\"#chart1\").remove();\n",
       "  //create canvas\n",
       "  element.append(\"<div id='chart1'></div>\");\n",
       "  $(\"#chart1\").width(\"1160px\");\n",
       "  $(\"#chart1\").height(\"800px\");        \n",
       "  var margin = {top: 20, right: 20, bottom: 30, left: 40};\n",
       "  var width = 1280 - margin.left - margin.right;\n",
       "  var height = 800 - margin.top - margin.bottom;\n",
       "  var svg = d3.select(\"#chart1\").append(\"svg\")\n",
       "    .style(\"position\", \"relative\")\n",
       "    .style(\"max-width\", \"960px\")\n",
       "    .attr(\"width\", width + \"px\")\n",
       "    .attr(\"height\", (height + 50) + \"px\")\n",
       "    .call(d3.behavior.zoom().on(\"zoom\", redraw))\n",
       "    .append(\"g\")\n",
       "    .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n",
       "    \n",
       "    \n",
       "  function redraw() {\n",
       "      svg.attr(\"transform\",\n",
       "               \"translate(\" + d3.event.translate + \")\"\n",
       "               + \" scale(\" + d3.event.scale + \")\");\n",
       "  }   \n",
       "\n",
       "  var color = d3.scale.category20();\n",
       "\n",
       "  var force = d3.layout.force()\n",
       "    .charge(-500)\n",
       "    //.linkDistance(5)\n",
       "    .linkDistance(function(d) { return (1 - d.value); })\n",
       "    .size([width, height]);\n",
       "\n",
       "  var graph = window.graph;\n",
       "    \n",
       "  force\n",
       "      .nodes(graph.nodes)\n",
       "      .links(graph.links)\n",
       "      .start();\n",
       "\n",
       "  var link = svg.selectAll(\".link\")\n",
       "      .data(graph.links)\n",
       "      .enter().append(\"line\")\n",
       "      .attr(\"class\", \"link\")\n",
       "      .style(\"stroke\", \"#999;\")\n",
       "      .style(\"stroke-opacity\", .6)\n",
       "      .style(\"stroke-width\", function(d) { return Math.sqrt(d.value); })\n",
       "  \n",
       "      .style(\"stroke\", \"blue\");\n",
       "\n",
       "  var node = svg.selectAll(\".node\")\n",
       "      .data(graph.nodes)\n",
       "      .enter().append(\"g\")\n",
       "      .attr(\"class\", \"node\")\n",
       "      .call(force.drag);\n",
       "    \n",
       "  node.append(\"circle\")\n",
       "      .attr(\"class\", \"node_circle\")\n",
       "      .attr(\"r\", 8)\n",
       "      .style(\"fill\", function(d) { return color(d.group); });\n",
       "\n",
       "  node.append(\"text\")\n",
       "      .attr(\"class\", \"node_text\")\n",
       "      .attr(\"dx\", 12)\n",
       "      .attr(\"dy\", \".35em\")\n",
       "      .text(function(d) { return d.name });\n",
       "\n",
       "  node.append(\"title\")\n",
       "      .text(function(d) { return d.name; });\n",
       "\n",
       "  var node_text = svg.selectAll(\".node_text\");\n",
       "  var node_circle = svg.selectAll(\".node_circle\");\n",
       "    \n",
       "  force.on(\"tick\", function() {\n",
       "    link.attr(\"x1\", function(d) { return d.source.x; })\n",
       "        .attr(\"y1\", function(d) { return d.source.y; })\n",
       "        .attr(\"x2\", function(d) { return d.target.x; })\n",
       "        .attr(\"y2\", function(d) { return d.target.y; });\n",
       "\n",
       "    node_circle.attr(\"cx\", function(d) { return d.x; })\n",
       "        .attr(\"cy\", function(d) { return d.y; });\n",
       "      \n",
       "    node_text.attr(\"x\", function(d) { return d.x; })\n",
       "        .attr(\"y\", function(d) { return d.y; });\n",
       "  });\n",
       "});"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%javascript\n",
    "require(['d3'], function(d3){\n",
    "  //a weird idempotency thing\n",
    "  $(\"#chart1\").remove();\n",
    "  //create canvas\n",
    "  element.append(\"<div id='chart1'></div>\");\n",
    "  $(\"#chart1\").width(\"1160px\");\n",
    "  $(\"#chart1\").height(\"800px\");        \n",
    "  var margin = {top: 20, right: 20, bottom: 30, left: 40};\n",
    "  var width = 1280 - margin.left - margin.right;\n",
    "  var height = 800 - margin.top - margin.bottom;\n",
    "  var svg = d3.select(\"#chart1\").append(\"svg\")\n",
    "    .style(\"position\", \"relative\")\n",
    "    .style(\"max-width\", \"960px\")\n",
    "    .attr(\"width\", width + \"px\")\n",
    "    .attr(\"height\", (height + 50) + \"px\")\n",
    "    .call(d3.behavior.zoom().on(\"zoom\", redraw))\n",
    "    .append(\"g\")\n",
    "    .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n",
    "    \n",
    "    \n",
    "  function redraw() {\n",
    "      svg.attr(\"transform\",\n",
    "               \"translate(\" + d3.event.translate + \")\"\n",
    "               + \" scale(\" + d3.event.scale + \")\");\n",
    "  }   \n",
    "\n",
    "  var color = d3.scale.category20();\n",
    "\n",
    "  var force = d3.layout.force()\n",
    "    .charge(-500)\n",
    "    //.linkDistance(5)\n",
    "    .linkDistance(function(d) { return (1 - d.value); })\n",
    "    .size([width, height]);\n",
    "\n",
    "  var graph = window.graph;\n",
    "    \n",
    "  force\n",
    "      .nodes(graph.nodes)\n",
    "      .links(graph.links)\n",
    "      .start();\n",
    "\n",
    "  var link = svg.selectAll(\".link\")\n",
    "      .data(graph.links)\n",
    "      .enter().append(\"line\")\n",
    "      .attr(\"class\", \"link\")\n",
    "      .style(\"stroke\", \"#999;\")\n",
    "      .style(\"stroke-opacity\", .6)\n",
    "      .style(\"stroke-width\", function(d) { return Math.sqrt(d.value); })\n",
    "  \n",
    "      .style(\"stroke\", \"blue\");\n",
    "\n",
    "  var node = svg.selectAll(\".node\")\n",
    "      .data(graph.nodes)\n",
    "      .enter().append(\"g\")\n",
    "      .attr(\"class\", \"node\")\n",
    "      .call(force.drag);\n",
    "    \n",
    "  node.append(\"circle\")\n",
    "      .attr(\"class\", \"node_circle\")\n",
    "      .attr(\"r\", 8)\n",
    "      .style(\"fill\", function(d) { return color(d.group); });\n",
    "\n",
    "  node.append(\"text\")\n",
    "      .attr(\"class\", \"node_text\")\n",
    "      .attr(\"dx\", 12)\n",
    "      .attr(\"dy\", \".35em\")\n",
    "      .text(function(d) { return d.name });\n",
    "\n",
    "  node.append(\"title\")\n",
    "      .text(function(d) { return d.name; });\n",
    "\n",
    "  var node_text = svg.selectAll(\".node_text\");\n",
    "  var node_circle = svg.selectAll(\".node_circle\");\n",
    "    \n",
    "  force.on(\"tick\", function() {\n",
    "    link.attr(\"x1\", function(d) { return d.source.x; })\n",
    "        .attr(\"y1\", function(d) { return d.source.y; })\n",
    "        .attr(\"x2\", function(d) { return d.target.x; })\n",
    "        .attr(\"y2\", function(d) { return d.target.y; });\n",
    "\n",
    "    node_circle.attr(\"cx\", function(d) { return d.x; })\n",
    "        .attr(\"cy\", function(d) { return d.y; });\n",
    "      \n",
    "    node_text.attr(\"x\", function(d) { return d.x; })\n",
    "        .attr(\"y\", function(d) { return d.y; });\n",
    "  });\n",
    "});"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
